package com.hyt.it.ogt.kq.service.gov.feign.pt;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hyt.common.apiInfor.ApiResponse;
import com.hyt.it.ogt.kq.service.gov.model.dto.ExamSubjectDTO;
import com.hyt.it.ogt.kq.service.gov.model.dto.OrganizationDTO;
import com.hyt.it.ogt.kq.service.gov.model.dto.PtCandidateDTO;
import com.hyt.it.ogt.kq.service.gov.model.dto.PtOfficeAreaDTO;
import com.hyt.it.ogt.kq.service.gov.model.entity.OfficeArea;
import com.hyt.it.ogt.kq.service.gov.model.entity.TaskArea;
import com.hyt.it.ogt.kq.service.gov.model.param.ExamSubjectParam;
import com.hyt.it.ogt.kq.service.gov.model.param.PtCandidateParam;
import com.hyt.it.ogt.kq.service.gov.model.vo.TestClassifyVO;
import com.hyt.it.ogt.kq.service.model.entity.Candidate;
import com.hyt.it.ogt.kq.service.model.entity.Subject;
import com.hyt.model.PageParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 平台客户端熔断器
 * 
 * @author chengxh
 * @since 2021-11-26
 */
@Component
@Slf4j
public class GovPtClientHystrix implements GovPtClient {

    @Override
    public ApiResponse<TestClassifyVO> getTreelist() {
        log.error("获取考试分类失败，进入熔断");
        return null;
    }

    /**
     * 获取考场数据
     * @param roomIdList
     * @return
     */
    @Override
    public ApiResponse<Object> getRooms(List<String> roomIdList){
        log.error("获取考场数据失败，进入熔断");
        return null;
    }

    /**
     * 查询机考考点信息
     */
    @Override
    public ApiResponse<Object> getTaskPlace(@RequestBody List<String> placeIdList){
        log.error("查询机考考点信息失败，进入熔断");
        return null;
    }

    /**
     * 根据区域id获取区域
     * @param areaIds
     * @return
     */
    @Override
    public ApiResponse<Object> getAreaByIds(@RequestBody List<String> areaIds){
        log.error("根据区域id获取区域失败，进入熔断");
        return null;
    }

    /**
     * 通过部门id查询详情
     * @param deptId
     * @return
     */
    @Override
    public ApiResponse<Object> getOne(@RequestParam String deptId){
        log.error("通过部门id查询详情失败，进入熔断");
        return null;
    }

    /**
     * 通过部门id查询详情列表
     * @param deptIds
     * @return
     */
    @Override
    public ApiResponse<List<Object>> getList(@RequestBody List<String> deptIds){
        log.error("通过部门id查询详情列表失败，进入熔断");
        return null;
    }

    /**
     * 通过区域的id获取全称
     * @param areaId
     * @return
     */
    @Override
    public ApiResponse<Object> joinAreaAddress(String areaId){
        log.error("通过区域的id获取全称失败，进入熔断");
        return null;
    }

    /**
     *获取全量的考场类型
     * @return
     */
    @Override
    public ApiResponse<Object> listAll(){
        log.error("获取全量的考场类型失败，进入熔断");
        return null;
    }

    @Override
    public ApiResponse<List<PtOfficeAreaDTO>> getAllAreas() {
        log.error("获取平台区域列表失败，进入熔断");
        return null;
    }

    @Override
    public ApiResponse<Page<ExamSubjectDTO>> getByPage(PageParam<Subject> pageParam, ExamSubjectParam examSubjectParam){
        log.error("获取平台科目失败，进入熔断");
        return null;
    }

    /**
     * 查询平台中指定id的科目信息
     * @param subjectIds
     * @return
     */
    @Override
    public ApiResponse<List<ExamSubjectDTO>> listAll(@RequestBody(required = false) List<String> subjectIds){
        log.error("获取平台科目失败，进入熔断");
        return null;
    }

    /**
     * 从平台查询考生
     * @param pageParam
     * @param ptCandidateParam
     * @return
     */
    @Override
    public ApiResponse<Page<PtCandidateDTO>> getByPage(Integer size,Integer current,List<String> deptIds,List<String> candidateIds){
        log.error("从平台查询考生失败，进入熔断");
        return null;
    }
}
